//--
app.controller('imovelController', 
		['$scope', 'imovelService', 'dialogs',
		 function($scope, imovelService, dialogs) {
	
	$scope.list = true;
	$scope.isCreate = true;
	$scope.condominio = { };
	$scope.condomino = { };
	
	/** CREATE **/
	$scope.create = function(unidade) {
		
		$scope.unidade = null;
		$scope.list = false;
		$scope.isCreate = true;
		$scope.condominio.selected = undefined;
		$scope.condomino.selected = undefined;
		
	};
	
	/** RETRIEVE **/
	$scope.retrieveFilter = function() {

		if($scope.filtro == undefined) {
			return;
		}

		if($scope.filtro.numero == undefined) {
			$scope.filtro.numero = '';
		}
		if($scope.filtro.nomeCondominio == undefined) {
			$scope.filtro.nomeCondominio = '';
		}
		
		var retrieveFilter = imovelService.retrieveFilter($scope.filtro.numero, $scope.filtro.nomeCondominio);
		retrieveFilter.then(function(resposta) {
			
			if(resposta != null) {
				if(resposta.data.status) {
					$scope.lista = resposta.data.object;
				} else {
					showAlertMessage(resposta.data.message);					
				}
			} else {
				showErrorMessage('Problemas de comunicação...');					
			}
		});
	};

	$scope.retrieveCondominios = function(nomeCondominio) {
		
		if(nomeCondominio == null || nomeCondominio == '') {
			return;
		}

		var retrieveFilter = imovelService.retrieveCondominios(nomeCondominio);
		retrieveFilter.then(function(resposta) {
			
			if(resposta != null) {
				if(resposta.data.status) {
					$scope.condominios = resposta.data.object;
				} else {
					showAlertMessage(resposta.data.message);					
				}
			} else {
				showErrorMessage('Problemas de comunicação...');					
			}
		});
	};

	$scope.retrievePessoas = function(tipo, nomePessoa) {
		
		if(nomePessoa == null || nomePessoa == '') {
			return;
		}

		var retrieveFilter = imovelService.retrievePessoas(nomePessoa);
		retrieveFilter.then(function(resposta) {
			
			if(resposta != null) {
				if(resposta.data.status) {
					if(tipo == "CO") {
						$scope.condominos = resposta.data.object;
					}
				} else {
					showAlertMessage(resposta.data.message);					
				}
			} else {
				showErrorMessage('Problemas de comunicação...');					
			}
		});
	};
	
	/** UPDATE **/
	$scope.update = function(unidade) {
		
		$scope.unidade = unidade;
		$scope.retrieveCondominios(unidade.condominio.nome);
		$scope.condominio.selected = unidade.condominio;
		$scope.condomino.selected = unidade.condomino;
		$scope.list = false;
		$scope.isCreate = false;
		
	};

	/** DELETE **/
	$scope.dlete = function(unidade) {

		var dlg = dialogs.confirm('Confirma Exclusão?','Imóvel: ' + unidade.numero + '; Condominio: ' + unidade.condominio.nome);
        dlg.result.then(function(btn){

    		var deleteBack = imovelService.remove(unidade);
    		deleteBack.then(function(resposta) {
    			if(resposta != null) {
    				if(resposta.data.status) {
						var index = $scope.lista.indexOf(unidade);
						$scope.lista.splice(index, 1);
						showSuccessMessage(resposta.data.message);
    				} else {
    					showErrorMessage('Problemas de comunicação...');
    				}
    			}
    		});
        	
        },function(btn){
          console.log('Shame on you for not thinking this is awesome!');
        });
        
	};
	
	$scope.save = function(isValid) {

		if(!isValid) {
			return;
		}
		
		$scope.unidade.condominio = $scope.condominio.selected;
		$scope.unidade.condomino = $scope.condomino.selected;
		var saveBack = imovelService.save($scope.unidade);
		saveBack.then(function(resposta) {
			if(resposta != null) {
				if(resposta.data.status) {
					$scope.unidade = resposta.data.object;
					if($scope.isCreate) {
						if($scope.lista == null) {
							$scope.lista = new Array();
						}
						$scope.lista.push($scope.unidade);
					}
					showSuccessMessage(resposta.data.message);
					$scope.list = true;
				} else {
					showErrorMessage(resposta.data.message);
				}
			} else {
				showErrorMessage('Problemas de comunicação...');
			}
		});
		
	};

	$scope.cancel = function(unidade) {
		$scope.list = true;
	};
		
}]);
